package com.zx._02_thread.基本操作;

import org.junit.Test;

/**
 * @version v1.0
 * @Project: 20180808_thread
 * @Title: Leason_1_create_thread
 * @Description: 创建线程
 * @author: zhangxue
 * @date: 2018年8月8日下午10:46:25
 * @company: yooli
 * @Copyright: Copyright (c) 2015
 */
public class Leason_1_create_thread {

    /**
     * @Title: 1. 通过继承Thread类来创建线程类
     * @date: 2018年8月8日下午10:52:24
     */
    @Test
    public void test1() {
        FirstThread t = new FirstThread();
        t.start();
    }

    /**
     * @Title: 2.通过实现Runnable接口来创建线程类
     * @date: 2018年8月8日下午10:52:24
     */
    @Test
    public void test2() {
        SecondThread st = new SecondThread();
        new Thread(st).start();
    }

    private static class FirstThread extends Thread {

        @Override
        public void run() {
            for (int i = 0; i < 100; i++) {
                // 当线程类继承Thread类时，直接使用this即可获取当前线程
                // Thread对象的getName()返回当前该线程的名字
                // 因此可以直接调用getName()方法返回当前线程的名
                System.out.println(Thread.currentThread().getName() + " " + i);
            }
        }
    }

    private static class SecondThread implements Runnable {

        @Override
        public void run() {
            for (int i = 0; i < 100; i++) {
                // 当线程类继承Thread类时，直接使用this即可获取当前线程
                // Thread对象的getName()返回当前该线程的名字
                // 因此可以直接调用getName()方法返回当前线程的名
                System.out.println(Thread.currentThread().getName() + " " + i);
            }
        }
    }


}
